//
// Created by wujehy on 18-11-14.
//

/***
 * 说明
 * 控制信息 会右主机 向 法中端发送 ibyte 的数据
 *
 * 其中 前三位 的 功能位 可以支持 8大功能
 *
 * 第四为树 启动标志 1 的话 启动 功能  0 则关闭
 *
 * 最后 4位 树 动作表
 *
 *
 *
 * */

#ifndef RUNCAR_CONTROL_H
#define RUNCAR_CONTROL_H

#include "RunCar.h"
#include "Steering.h"

#define uchar unsigned char

//功能表
#define  STOP               0x00
#define  FUNC_CAR           0x20
#define  FUNC_CAMEAR        0x40
//#define  STOP_CAR_AND_CAM   0x60
#define  FUNC_LEVEL         0x80
#define  FUNC_MASK          0xE0
#define  FUNC_ATTR_MASK      0x0f
#define  FUNC_MSG_MASK      0x1f
//标志 符
#define FUNC_TAG            0x10

//参数启动表
#define UP                  1
#define DOWN                2
#define LEFT                3
#define RIGHT               4

#define FORWARD_LEFT        0x08
#define FORWARD_RIGHT       0x01
#define BACKWARD_LEFT       0x04
#define BACKWARD_RIGHT      0x02

#define LEVEL_LOW           0x01
#define LEVEL_MIDDLE        0x02
#define LEVEL_HIGH          0x03
#define LEVEL_MORE          0x04



class Control {
public:
    void init();
    bool isRunTag = false;
    uchar status=STOP;
    void  procRunCar();
    void  procCamera();
    uchar  procLevel();

    void procMsgData();

    unsigned char getSaveLevel() const;


    void setMsgData(unsigned char msgData);

    void setDoRanCar(unsigned char doRanCar);

    void setDoCamera(unsigned char doCamera);

    void setSaveLevel(unsigned char saveLevel);

private:
    RunCar *runCar;
    Steering *steering;
    uchar msgData;//接受到的数据
    uchar doRanCar; //功能1 runcar  的 数据
    uchar doCamera; //功能2
    uchar saveLevel;//等级储存
};


#endif //RUNCAR_CONTROL_H
